<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<% response.setContentType("text/html; charset=UTF-8");%>
<% request.setCharacterEncoding("utf-8");%>
<%@page import="controller.ModuleExamController, dto.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.text.SimpleDateFormat" %>

<%
    String maBT = request.getParameter("mabt");
    if (maBT == null) {
        return;
    }

    // thêm các lựa chọn vào table ct_baithi và tính điểm
    int socaudung = 0;
    int tongsocauhoi = 0;
    ModuleExamController ctrl = new ModuleExamController();

    ResultSet rs = ctrl.getBaiThiSauKhiThi(maBT);
    while (rs.next()) {
        String cauhoi = Integer.toString(rs.getInt("CTDT.cauhoi"));
        String luachon = request.getParameter(cauhoi);
        if (luachon == null) {
            luachon = "0";
        }
        if (Integer.parseInt(luachon) == rs.getInt("CH.dapan")) {
            socaudung++;
        }
        tongsocauhoi++;
        try {
            if (ctrl.themChiTietBaiThi(maBT, cauhoi, luachon) == false) {
                out.println("Lỗi insert vào ct_baithi.");
            }
        } catch (Exception e) {
            out.println("Lỗi insert vào ct_baithi : " + e.getMessage());
        }
    }
    rs.close();
    float diem = Math.round(((float) socaudung / tongsocauhoi * 10) * 10) / 10f; // làm tròn 1 sô thì nhân 10 chia 10, 2 số thì nhân 100 chia 100, ...

    // lấy thời gian nộp bài
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date thoigiankt = calendar.getTime();

    // lấy thời gian bắt đầu làm bài và thời gian quy định
    try {
        int thoigianquydinh = ctrl.getThoiGianQuyDinhCuaBaiThi(maBT);
        Timestamp thoigianbd = ctrl.getThoiGianBatDauLamBai(maBT);
        if (((thoigiankt.getTime() - thoigianbd.getTime()) / 1000 / 60) > (thoigianquydinh + 1)) {
            diem = -1; // phạm qui
        }
    } catch (Exception e) {
        out.println("Lỗi không tìm được loại đề thi : " + e.getMessage());
    }
    rs.close();

    try {
        if (ctrl.updateThoiGianKetThuLamBai(maBT, sdf.format(thoigiankt), diem) == false) {
            out.println("Lỗi update thoigiankt và diem.");
        }
    } catch (Exception e) {
        out.println("Lỗi update thoigiankt và diem : " + e.getMessage());
    }

    response.sendRedirect("../baithi.jsp?mabt=" + maBT);
%>